1. Field of the Invention
The present invention is in the field of computers and signal processing systems and circuits. More particularly, the invention is in the field of addressing a set of devices through a codec.
2. Background Art
Personal computers are used extensively to communicate through a telephone line with a modem. Personal computers are also widely used for receiving or producing audio signals in order to communicate with PC users or for entertainment. To facilitate the handling of audio signals, an audio xe2x80x9ccodecxe2x80x9d is used by in PC""s. Also, a modem xe2x80x9ccodecxe2x80x9d is used as part of a typical modem used in PCs. A codec (COder-DECoder) is a circuit that converts analog signals to digital code and vice versa using conversion methods such as PCM (Pulse Code Modulation). A codec typically includes both analog to digital and digital to analog conversion circuits.
FIG. 1 is a prior art diagram illustrating how a codec might be connected to a motherboard and in particular to a controller. Motherboard 110 is a modem PC motherboard. System logic 112 resides on motherboard 110 and is coupled to the remaining components on the motherboard primarily through a PCI (Peripheral Component Interconnect) bus 114. Controller 116 communicates with system logic 112 through PCI bus 114. In FIG. 1, controller 116 is shown as a stand-alone device. However, controller 116 could be embedded or incorporated into other portions of the PC system including the system logic.
A riser 128 houses other components in FIG. 1. Riser 128 complies with the industry""s standard specification for an Audio/Modem Riser (or xe2x80x9cAMRxe2x80x9d). The AMR specification defines an industry standard form factor for Audio, Audio/Modem or just Modem risers. The AMR specification defines riser mechanical and electrical requirements for certain systems using what is called an AC-link (xe2x80x9cAudio Codec linkxe2x80x9d) interface as one of the connections between the riser and the motherboard.
Referring to FIG. 1, riser 128 includes codec 126. When riser 128 is plugged into motherboard 110, codec 126 communicates with controller 116 through AC-link 124, AMR interface connectors 122 and 120, and AC-link 118. Alternatively, the combination of AC-link 124, AMR interface connectors 122 and 120, and AC-link 118 can be thought of simply as a single AC-link connecting controller 116 to codec 126.
Reference is made to FIG. 2 which shows controller 216 that is coupled to codec 226 through AC-link 218. Codec 226 includes codec register set 230. Codec register set 230 is utilized by system and circuit design engineers for various control functions such as for configuring the codec or for setting up the codec to record a certain input such as a CD ROM input. As further examples, the registers in codec register set 230 are used for setting headphone volume, PC beep volume, microphone volume, CD volume, video volume, record gain, 3D control, audio status, audio sample rate control, modem status, modem DAC/ADC level control, GPIO (General Purpose Input/Output) pin configuration, GPIO pin polarity and type, power management, as well as many other codec functions.
Typical codecs, such as those complying with the Intel(copyright) AC ""97 specification entitled xe2x80x9cAC ""97 Component Specification,xe2x80x9d Revision 2.1, published by Intel(copyright) Corporation on May 22, 1998 (or simply xe2x80x9cAC ""97 specificationxe2x80x9d), have been designed to perform primarily audio related functions. However, it has become increasingly important for codecs, such as those complying with AC ""97 specification, to perform primarily modem related functions. Modem related functions can require additional modules to be controlled by the controller. An example of when an additional module or device and a respective set of registers need to be addressed and controlled through the AC-link is when it is desired to perform a DSP (xe2x80x9cDigital Signal Processingxe2x80x9d) function, such as acoustic echo cancellation, at a point beyond the AC-link and the codec (as opposed to performing the echo cancellation in the controller itself).
Other examples of additional modules or devices and their respective set of registers that need to be addressed and controlled through the AC-link are an LSD (xe2x80x9cLine Side Devicexe2x80x9d), an SSD (xe2x80x9cSystem Side Devicexe2x80x9d), and an E-PHY (xe2x80x9cEthernet PHYsical-layer interfacexe2x80x9d) device. By way of background, an LSD is a module that has been recently devised and added by some manufacturers to a Data Access Arrangement (xe2x80x9cDAAxe2x80x9d) device in order to facilitate the interfacing of the DAA with a codec. A DAA is a device that is widely used in the art and is conventionally comprised of discrete components used to interface with a telephone line. As stated above, recently, the LSD has been added as a module in the DAA to facilitate interfacing between the DAA and a codec. With the recent addition of the LSD to the DAA by some manufacturers, the DAA is comprised of two main modules which are (a) the discrete component module, and (b) the LSD.
The addition of the LSD to the DAA has resulted in the addition of a module inside the codec to interface with the LSD. The module inside the codec is the SSD. The interface between the LSD which is outside the codec and the SSD which is inside the codec is performed through what is referred to as a Digital Isolation Barrier (xe2x80x9cDIBxe2x80x9d). The addition of the LSD and the SSD as recent modules that facilitate codec operations and which facilitate the codec interfacing with a telephone line, has given rise to the need to address and control these recently added modules, namely the LSD and the SSD, through the AC-link and the codec. It is noted that an SSD may also be a device separate from (as opposed to integrated in) the codec. An E-PHY is a device that performs Ethernet related functions in a LAN (xe2x80x9cLocal Area Networkxe2x80x9d). The E-PHY may be integrated in the codec or, alternatively, the E-PHY may be a device separate from the codec. Each of these modules or devices, i.e. the SSD, LSD, and E-PHY, has a respective set of registers which needs to be addressed and controlled by the controller through the AC-link.
As stated above, in each of the above examples the controller is required to address and control a bank of registers that are accessible to the controller only through the AC-link and the codec. In other words, in order to access devices that are located xe2x80x9cbeyondxe2x80x9d the AC-link, the controller must go through both the AC-link and the codec. As such, the controller must comply with the limitations of the AC-link as well as the limitations of the codec itself. The limitations of the AC-link stem from (a) the limited number of physical wires (or lines) available in the AC-link for communication between the controller and the codec; and (b) a predetermined protocol for AC-link to conduct communications between the controller and the codec. The limitations of the codec stem primarily from the limited number of registers which can by used by a design engineer according to the AC ""97 specification for a codec.
The combined limitations of the AC-link and the codec, i.e. the limited number of lines in the AC-link, the predetermined protocol of the AC-link, and the small number of available registers in the codec, make it very difficult, if not impossible, for the design engineer to address and control expansion modules or devices, such as SSD, LSD, and E-PHY, that need to be addressed and controlled by going through the AC-link and the codec.
As regards the small number of available registers in the codec, the AC ""97 specification, which is widely used in the industry, is directed to a codec having merely a total of 128 registers, each register being 16-bit wide. However, according to the AC ""97 specification, the design engineer is not permitted to address any of the odd-numbered registers in the codec. In fact, according to the AC ""97 specification, the codec responds with all 0""s to accesses of the odd-numbered registers. Thus, the total number of registers in an AC ""97 codec is effectively 64, i.e. the 64 even-numbered registers from the total of 128 registers. However, most of these 64 even-numbered registers are reserved for predetermined functions such as headphone volume, PC beep volume, microphone volume, CD volume, line in volume, video volume, record select, record gain, 3D control, audio status, audio sample rate control, modem status, modem DAC/ADC level control, GPIO (General Purpose Input/Output) pin configuration, GPIO pin polarity and type, power down control and status, as well as many other codec functions.
In fact, only 16 even-numbered registers in the AC ""97 specification are available for arbitrary use by a design engineer. These 16 even-numbered registers available for arbitrary use are referred to as vendor specific registers. More specifically, only the even-numbered registers between addresses 5A (hexadecimal) and 7A (hexadecimal) are available for use by a design engineer. What makes matters worse is that a large number of design engineers and xe2x80x9cvendorsxe2x80x9d compete for the use of these 16 registers to accomplish their own design objectives. In other words, each design engineer or vendor has his or her own different customized code and his or her own different requirements for addressing and controlling the 16 available registers, i.e. the registers having addresses 5A (hexadecimal) to 7A (hexadecimal). In sum, there simply are not nearly enough registers for control of expansion modules and devices such as SSD, LSD, and E-PHY.
With respect to the limited number of physical wires (or lines) available in the AC-link for communication between the controller and the codec, there are merely five lines (i.e. five wires) available in the AC-link for connecting the controller to the codec. From these five lines, only one line, i.e. an xe2x80x9cSDATA_OUTxe2x80x9d line is used for addressing and controlling the codec""s 128 registers discussed above. According to the AC ""97 specification, only this line, i.e. SDATA_OUT, can be used to address and control a large number of registers belonging to expansion devices such as SSD, LSD, and E-PHY mentioned above. Thus, it is not possible, while complying with the AC ""97 specification, to add an extra line for the purpose of communication with the expansion devices and modules such as those mentioned above.
Regarding the AC-link""s predetermined protocol for communications between the controller and the codec, the protocol allows merely seven bits for addressing the codec registers. Although these seven bits theoretically address all the 128 registers in the codec, only 16 of these registers at addresses 5A (hexadecimal) to 7A (hexadecimal) are available for use by a number of competing design engineers and vendors.
Therefore, it is apparent that any design engineer wanting or needing to address expansion devices and modules by going through the AC-link and the codec has available to him or her only a very limited number of registers, i.e. 16 even-numbered and wordwide registers between addresses 5A (hexadecimal) and 7A (hexadecimal). This limited number of registers does not permit a one to one mapping of all the registers in expansion devices and modules into these registers. In other words, out of a great number of registers located in the expansion devices and modules such as SSD, LSD, and E-PHY, only a total of 16 registers can be possibly mapped into the 16 available registers between addresses 5A (hexadecimal) and 7A (hexadecimal). Thus, it is clear that a one to one mapping is not a solution.
Accordingly, there is serious need in the art for a solution to the persistent problem of inability of a design engineer to address and control expansion modules and devices by accessing them through an AC-link and a codec. More specifically, there is serious need in the art for a solution to overcome the limitations imposed by the AC ""97 specification which are availability of only one line, i.e. the SDATA_OUT line, the availability of only 16 registers, and the restrictions imposed by a predetermined communication protocol. As discussed above, unless these limitations are overcome, it would be practically impossible for the design engineer to access and control expansion modules and devices by going through the AC-link and the codec.
The present invention is method and apparatus for addressing and controlling expansion devices through an AC-link and a codec. The invention overcomes the serious need in the art for addressing and controlling expansion modules and devices by accessing them through an AC-link and a codec. The invention enables a controller to address and control the large number of registers in various expansion devices despite the limitations imposed by the small number of available registers in the codec register set and despite the limitations imposed by a single line available for transmission of address and control data to the codec, and further despite the limitations due to a restrictive protocol for communications between the codec and the controller.
In one embodiment, the invention utilizes one of the vendor specific registers in the codec register set as a designated register. A controller can write to or read from the designated register through an AC-link while complying with the AC ""97 specification. The address and data bits in the designated register are used to write to or read from a target register in an expansion device. The designated register is selected from one of the 16 registers available to a design engineer in accordance with the AC ""97 specification. An example of an expansion device that can be addressed and controlled through the designated register is an SSD device. Thus, through the designated register the controller can address and control a large number of expansion registers belonging to various expansion devices.
In another embodiment, the invention utilizes two designated registers in the codec register set. A controller can write address information into one of the designated registers while complying with the AC ""97 specification. The controller can also write data to or read data from the other designated register through the AC-link while complying with the AC ""97 specification. The address and data bits in the designated registers are used to write to or read from a target register in an expansion device. The two designated registers are selected from the 16 registers available to a design engineer in accordance with the AC ""97 specification.